package com.feinno.urcs.group.log;

import com.feinno.superpojo.SuperPojo;

import java.util.Date;

/**
 * Created by wuhao on 15-9-24.
 */
public class MessageLogArgs extends SuperPojo {
	public static final String TASK_EVENT_NAME = "log:GroupMessage";

	/**
	 * bigInt
	 * 自增列
	 */
	private long id;


	/**
	 * 上行
	 * 下行
	 * <p>
	 * varchar(128)
	 * 消息ID
	 */
	private String messageId="";

	/**
	 * 上行（发送者）
	 * 下行（接收者，如果是飞信，OwnerUri=groupId@fetion.com.cn）
	 * varchar(128)
	 * 所有者Uri
	 */
	private String ownerUri;

	/**
	 * 下行
	 * varchar(10)
	 * BF-北方 NF-南方
	 */
	private String ownerSite;

	/**
	 * 上行
	 * 下行（群）
	 * varchar(128)
	 * 对端Url(群组/公众号/群发管理员等)
	 */
	private String peerUri;

	/**
	 * varchar(10)
	 * BF-北方 NF-南方
	 */
	private String peerSite;

	/**
	 * varchar(1000)
	 * 接收方列表 仅出现在群发消息上行
	 */
	private String peerUriList = null;

	/**
	 * 上行
	 * 群消息转发的成员数量
	 */
	private int peerUriListCount;

	/**
	 * 上行
	 * 下行（发消息的人）
	 * varchar(128)
	 * 群组消息发送方uri
	 */
	private String referBy;

	/**
	 * 上行（APP，PC，FETION）
	 * 下行（APP，PC, *FETION）
	 * varchar(128)
	 * 所有者的客户端的类型
	 */
	private String userAgent;

	/**
	 * varchar(128)
	 * 终端IP地址 P-NetWork-Info
	 */
	private String clientIp;

	/**
	 * varchar(128)
	 * 接入地址:SBC/P-CSCF
	 */
	private String accessAddress;

	/**
	 * 上行
	 * 下行
	 * int
	 * > 1 上行
	 * 2 上行抄送
	 * > 3 下行
	 * 4 直接短信下行
	 * 5 服务号短信下行
	 * 6 推送消息
	 */
	private MessageDirection messageDirection = MessageDirection.UNKNOWN;

	/**
	 * 上行
	 * 下行
	 * int
	 * 1 – 普通消息
	 * > 2 – 群组消息
	 * 3 – 阅后即焚消息
	 * 4 – 公众平台消息
	 * 5 – 群发消息
	 * 6 – 广播消息
	 * 7 – 定向消息
	 */
	private MessageType messageType =MessageType.UNKNOWN;

	/**
	 * int
	 * bit 0：静默标记
	 */
	private int messageFlags;

	/**
	 * 上行
	 * 下行
	 * int
	 * 1 - PageMode
	 * 2 - LargeMode
	 * 3 - FT
	 * 4 - Session
	 */
	private MessageKindType messageKindType =MessageKindType.UNKNOWN;

	/**
	 * 上行
	 * 下行
	 * int
	 * 0 未知
	 * 1 纯文本
	 * 2 图片
	 * 3 音频
	 * 4 视频
	 * 5 位置
	 * 6 电子名片
	 * 7 表情商店
	 * 8 彩云文件分享
	 * 9 公众平台消息
	 */
	private MessageContentType contentType =MessageContentType.UNKNOWN;

	/**
	 * 上行
	 * 下行
	 * varchar(1024)
	 * 消息内容
	 */
	private String content;

	/**
	 * 上行
	 * 下行
	 * int
	 * 消息大小(文件传输时，为文件大小)
	 */
	private int fileSize;

	/**
	 * 上行
	 * 下行
	 * varchar(128)
	 * 传输文件时，为文件名
	 */
	private String fileName;

	/**
	 * 上行（200）
	 * 下行（MSRP-SUCCESS: 200, MSRP-FAILED, MSRP，错误码)
	 * int
	 * 200 下行成功
	 * 202 服务器代收成功
	 */
	private int statusCode;

	/**
	 * 上行
	 * 下行（自己编）
	 * varchar(128)
	 * 原因
	 */
	private String reason;

	/**
	 * 上行
	 * 下行(收到应答的时间）
	 * datetime
	 * 消息时间
	 */
	private Date messageTime;

	/**
	 * int(10)
	 * 消息流量
	 */
	private int messageFlux;

	/**
	 * varchar(1024)
	 * 预留
	 */
	private String messageExtend;

	public long getId() {
		return id;
	}

	public MessageLogArgs setId(long id) {
		this.id = id;
		return this;
	}

	public String getMessageId() {
		return messageId;
	}

	public MessageLogArgs setMessageId(String messageId) {
		this.messageId = messageId;
		return this;
	}

	public String getOwnerUri() {
		return ownerUri;
	}

	public MessageLogArgs setOwnerUri(String ownerUri) {
		this.ownerUri = ownerUri;
		return this;
	}

	public String getOwnerSite() {
		return ownerSite;
	}

	public MessageLogArgs setOwnerSite(String ownerSite) {
		this.ownerSite = ownerSite;
		return this;
	}

	public String getPeerUri() {
		return peerUri;
	}

	public MessageLogArgs setPeerUri(String peerUri) {
		this.peerUri = peerUri;
		return this;
	}

	public String getPeerSite() {
		return peerSite;
	}

	public MessageLogArgs setPeerSite(String peerSite) {
		this.peerSite = peerSite;
		return this;
	}

	public String getPeerUriList() {
		return peerUriList;
	}

	public MessageLogArgs setPeerUriList(String peerUriList) {
		this.peerUriList = peerUriList;
		return this;
	}

	public int getPeerUriListCount() {
		return peerUriListCount;
	}

	public MessageLogArgs setPeerUriListCount(int peerUriListCount) {
		this.peerUriListCount = peerUriListCount;
		return this;
	}

	public String getReferBy() {
		return referBy;
	}

	public MessageLogArgs setReferBy(String referBy) {
		this.referBy = referBy;
		return this;
	}

	public String getUserAgent() {
		return userAgent;
	}

	public MessageLogArgs setUserAgent(String userAgent) {
		this.userAgent = userAgent;
		return this;
	}

	public String getClientIp() {
		return clientIp;
	}

	public MessageLogArgs setClientIp(String clientIp) {
		this.clientIp = clientIp;
		return this;
	}

	public String getAccessAddress() {
		return accessAddress;
	}

	public MessageLogArgs setAccessAddress(String accessAddress) {
		this.accessAddress = accessAddress;
		return this;
	}

	public MessageDirection getMessageDirection() {
		return messageDirection;
	}

	public MessageLogArgs setMessageDirection(MessageDirection messageDirection) {
		this.messageDirection = messageDirection;
		return this;
	}

	public MessageType getMessageType() {
		return messageType;
	}

	public MessageLogArgs setMessageType(MessageType messageType) {
		this.messageType = messageType;
		return this;
	}

	public int getMessageFlags() {
		return messageFlags;
	}

	public MessageLogArgs setMessageFlags(int messageFlags) {
		this.messageFlags = messageFlags;
		return this;
	}

	public MessageKindType getMessageKindType() {
		return messageKindType;
	}

	public MessageLogArgs setMessageKindType(MessageKindType messageKindType) {
		this.messageKindType = messageKindType;
		return this;
	}

	public MessageContentType getContentType() {
		return contentType;
	}

	public MessageLogArgs setContentType(MessageContentType contentType) {
		this.contentType = contentType;
		return this;
	}

	public String getContent() {
		return content;
	}

	public MessageLogArgs setContent(String content) {
		this.content = content;
		return this;
	}

	public int getFileSize() {
		return fileSize;
	}

	public MessageLogArgs setFileSize(int fileSize) {
		this.fileSize = fileSize;
		return this;
	}

	public String getFileName() {
		return fileName;
	}

	public MessageLogArgs setFileName(String fileName) {
		this.fileName = fileName;
		return this;
	}

	public int getStatusCode() {
		return statusCode;
	}

	public MessageLogArgs setStatusCode(int statusCode) {
		this.statusCode = statusCode;
		return this;
	}

	public String getReason() {
		return reason;
	}

	public MessageLogArgs setReason(String reason) {
		this.reason = reason;
		return this;
	}

	public Date getMessageTime() {
		return messageTime;
	}

	public MessageLogArgs setMessageTime(Date messageTime) {
		this.messageTime = messageTime;
		return this;
	}

	public int getMessageFlux() {
		return messageFlux;
	}

	public MessageLogArgs setMessageFlux(int messageFlux) {
		this.messageFlux = messageFlux;
		return this;
	}

	public String getMessageExtend() {
		return messageExtend;
	}

	public MessageLogArgs setMessageExtend(String messageExtend) {
		this.messageExtend = messageExtend;
		return this;
	}

	public static MessageLogArgs createUpstreamMessageLog() {
		return null;
	}

	public static MessageLogArgs createDownstreamMessageLog() {
		return null;
	}


}
